A virtual disk is basically a set of one or more files or other storage extent (e.g., a disk, partition on a disk or the like) that is configured to operate as if it were a physical hard disk drive for a computer system. Virtual disk input and output (“I/O” comprising reads and writes to a virtual disk) manipulate virtual disk data. Various aspects of a virtual disk's data also are manipulated by “meta-operations,” including operations that create and delete snapshots, create and delete checkpoints, change where data is stored, delete unused data, and so forth.
Because virtual disk I/O and meta-operations both write to a virtual disk, there is the potential for a meta-operation to conflict with a virtual disk I/O, causing data corruption. A straightforward approach to avoiding such potential corruption problems is to disallow meta-operations while the virtual disk is in use as a disk for servicing virtual disk I/O. However, this approach is not desirable because it limits the scenarios in which meta-operations can be used. A solution is needed that allows meta-operations to safely proceed while a virtual disk is in use as a disk.